Custom messages can be attached to a customer, vendor, inventory item, or employee. The custom message will only show for a specific account or group of accounts. This feature is used to prompt the user when a document is created, saved, or process. For example a custom customer message may be added to prompt the user that only specific types of payments can be received from this specific customer or a variety of other custom messages. This custom message feature can be used to abort a process if the manager wishes to restrict a customer or vendor. Custom messages can be configured to only show based on a specific criteria or expression.
There is an additional feature available only with custom customer or vendor messages. A manager override can be added to the Abort message to allow a manager override. This feature is great for messages such as credit limit overrides or other manager approval messages.
Some messages may apply only to the billing customer or vendor and others may apply to the shipping account. Review the following steps to configure custom messages:
When a message is to appear: The When options depend on which type of record for the custom message. For example the following When options are available for a customer record:
Upon Invoice Process
Upon Invoice Save
Upon New Invoice
Upon Processing Payment
Additional When options may appear depending on the available modules within EBMS. Review Server Manager > Optional EBMS Modules for more details.
Upon New Job
Upon New Proposal
Upon New Task
The When options may vary based on options or account types.
Set the Trigger for setting to determine if only the customer or vendor's billing account triggers the message, only the shipping/bill to account, or if the message is triggered for both accounts. Right click to show this column if the Trigger for column is hidden.
The Response to the message: This option determines the result of the message. These options will also determine the message response buttons as well s the default button.
Abort the Process - This option will only display the OK button and will not allow the user to proceed with the selected process (Identified by the When option).
Default to Abort Question - This option adds the "Do you wish to continue?" question and adds both Yes and No buttons. The No button is set as the default button so the process will abort if the user presses the enter key.
Default to Proceed Question - This option also adds the "Do you wish to continue?" question and adds both Yes and No buttons. The Yes button is set as the default button so the process will proceed if the user presses the enter key.
Warning Message - This option will only display the OK button and will proceed when the button is clicked by the user.
The Message text is the message that is displayed within the custom message dialog. Database expression functions can be used to create dynamic text.
Set the optional User level to override abort message setting to prompt the system to request a manager override when a message Expression is TRUE. The manager override message will appear only when all the following conditions are TRUE:
The When and Trigger for settings must be TRUE
The Response must be set to Abort the Process
The Expression must be TRUE
The user's security level is below the User level to Override Abort Message setting. For example if the User Level to Override Abort Message is set to Manager then all users with Advanced User setting and lower will see this message.
If the user's security level is equal to or greater than the User Level to Override Abort Message setting, the message will show a standard yes/no option rather than an abort message.
Set the User Level to Override Abort Message to (No Override) to disable the manager override option.
The manager override option to the abort message setting is useful for messages such as an abort message based on the age of the customer's oldest invoice or based on the total outstanding being greater than the credit limit. See an example of the settings for these common message configurations at the bottom of this section.
A custom message can be set for a group of accounts such as all customers within a specific folder. These custom messages are set within the same dialog as folder defaults. Complete the following steps to set global messages:
Note that the messages within the Messages tab are not filtered down like other messages but are active for all customers within the selected folder.
Go to
and select to set custom messages for a group of vendors.Go to
and select to set custom messages for a group of employees.A custom message can be created for all accounts. For example by entering a custom message within the Messages tab of sales > Options, the custom message will appear for ALL customers. Select Sales > Options from the main EBMS Menu and click on the Messages tab to view the following dialog:
Use the same custom message settings as individual customers.
Go to Messages tab for custom vendor messages.
and click on theGo toMessages tab for custom employee messages.
and click on theThe following table lists some custom customer messages that can be added to one or a group of customers. Copy the Description, When, Response, Expression, and Message from the table below, open a specific customer folder or record, and then paste into the custom Messages tab as explained above.
Set the optional Trigger For and User level to override abort message options for any of the following customer messages:
Description | When | Response | Expression | Message |
A/R Credit limit reached | Upon Invoice Process | Default to Proceed Question | (arcusdet->bal_0 + arcusdet->pur_1 + arcusdet->pur_2 + arcusdet->pur_3 + arcusdet->pur_4 + arcusdet->pur_5 + arcusdet->pur_6 + arcusdet->pur_7 + arcusdet->pur_8 + arcusdet->pur_9 + arcusdet->pur_10 + arcusdet->pur_11 + arcusdet->pur_12 - arcusdet->pay_1 - arcusdet->pay_2 - arcusdet->pay_3 - arcusdet->pay_4 - arcusdet->pay_5 - arcusdet->pay_6 - arcusdet->pay_7 - arcusdet->pay_8 - arcusdet->pay_9 - arcusdet->pay_10 - arcusdet->pay_11 - arcusdet->pay_12 + arinv->total) > arcust->cred_lim .and. arcust->cred_lim >0 .and. arinv->terms = "2" | "This customer has exceeded their credit limit. Do you want to process it anyway?" |
Tax Exempt Expired | Upon Invoice Process | Default to Proceed Question | exp_date < date() .and. tax_table = "EXEMPT " .and. dtos( exp_date ) <> " " | "The tax exemption for this customer has expired. Do you want to continue with this invoice? |
Credit balance on account | Upon Customer Entry | Warning Message | (arcusdet->bal_0 + arcusdet->pur_1 + arcusdet->pur_2 + arcusdet->pur_3 + arcusdet->pur_4 + arcusdet->pur_5 + arcusdet->pur_6 + arcusdet->pur_7 + arcusdet->pur_8 + arcusdet->pur_9 + arcusdet->pur_10 + arcusdet->pur_11 + arcusdet->pur_12 - arcusdet->pay_1 - arcusdet->pay_2 - arcusdet->pay_3 - arcusdet->pay_4 - arcusdet->pay_5 - arcusdet->pay_6 - arcusdet->pay_7 - arcusdet->pay_8 - arcusdet->pay_9 - arcusdet->pay_10 - arcusdet->pay_11 - arcusdet->pay_12) < -.001 | "This customer has credit balance." |
Credit balance on account | Upon New Invoice | Warning Message | (arcusdet->bal_0 + arcusdet->pur_1 + arcusdet->pur_2 + arcusdet->pur_3 + arcusdet->pur_4 + arcusdet->pur_5 + arcusdet->pur_6 + arcusdet->pur_7 + arcusdet->pur_8 + arcusdet->pur_9 + arcusdet->pur_10 + arcusdet->pur_11 + arcusdet->pur_12 - arcusdet->pay_1 - arcusdet->pay_2 - arcusdet->pay_3 - arcusdet->pay_4 - arcusdet->pay_5 - arcusdet->pay_6 - arcusdet->pay_7 - arcusdet->pay_8 - arcusdet->pay_9 - arcusdet->pay_10 - arcusdet->pay_11 - arcusdet->pay_12) < -.001 | "This customer has a $" + ltrim( str( ( arcusdet->bal_0 + arcusdet->pur_1 + arcusdet->pur_2 + arcusdet->pur_3 + arcusdet->pur_4 + arcusdet->pur_5 + arcusdet->pur_6 + arcusdet->pur_7 + arcusdet->pur_8 + arcusdet->pur_9 + arcusdet->pur_10 + arcusdet->pur_11 + arcusdet->pur_12 - arcusdet->pay_1 - arcusdet->pay_2 - arcusdet->pay_3 - arcusdet->pay_4 - arcusdet->pay_5 - arcusdet->pay_6 - arcusdet->pay_7 - arcusdet->pay_8 - arcusdet->pay_9 - arcusdet->pay_10 - arcusdet->pay_11 - arcusdet->pay_12 ) * -1, 20, 2 ) ) + " credit on the account." |
Salesperson required on SO | Upon Invoice Save | Abort the Process | arinv->salesman = " " | "Please enter a salesperson." |
Salesperson required on proposal | Upon Proposal Save | Abort the Process | arqt->salesman = " " | "Please enter a salesperson under the General Info tab." |
Show customer memo | Upon New Invoice | Warning Message | arcust->memo <> " " | ""+memo |
Customer requires PO | Upon Invoice Save | Default to Abort Question | arcust->chargepymt = .t. .and. ARINV->PO_NO = " " | "There is no PO number in the PO/Job field." + CHR(13) + "This customer requires a PO number before proceeding." |
Require today's date for invoice | Upon Invoice Requst | Default to Abort Question | inv_date <> date() | "Invoice date is not for today. Please change date to today." |
Oldest overdue invoice certain limit reached | Upon New Invoice | Abort the Process | arcust->oldest_ovr > 45 | "This customer has overdue invoice(s) older than 45 days! Do not make a new invoice!" |
Message Options
Example of displaying fields: alltrim(F_NAME) + " " + alltrim(L_NAME)
Carriage return: + Chr(13) +
New ARCUST virtual field added to calculate the age (in days) of the oldest overdue invoice (224 or later)
ARCUST->OLDEST_OVR
So the expression for the customer message to be able to accomplish "if the customer has overdue invoices older than 45 days" is:
"arcust->oldest_ovr > 45